package com.zgx.plus.common.base;


import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zgx.plus.common.api.model.LoginEntity;
import com.zgx.plus.common.response.page.PageDomain;
import com.zgx.plus.common.response.page.TableDataInfo;
import com.zgx.plus.common.utils.SecurityUtils;
import com.zgx.plus.common.utils.ServletUtils;
import org.springframework.http.HttpStatus;

import java.util.List;

public class BaseController {
    /**
     * 设置请求分页数据
     */
    protected void startPage() {
        PageDomain pageDomain = ServletUtils.buildPageHelperRequest();
        PageHelper.startPage(pageDomain.getPageNum(), pageDomain.getPageSize())
                .setOrderBy(pageDomain.getOrderBy())
                .setReasonable(pageDomain.getReasonable());
    }

    /**
     * 设置请求排序数据
     */
    protected void startOrderBy() {
        PageDomain pageDomain = ServletUtils.buildPageHelperRequest();
        if (StrUtil.isNotEmpty(pageDomain.getOrderBy())) {
            PageHelper.startPage(pageDomain.getPageNum(), pageDomain.getPageSize())
                    .setOrderBy(pageDomain.getOrderBy())
                    .setReasonable(pageDomain.getReasonable());
        }else{
            startPage();
        }
    }

    /**
     * 响应请求分页数据
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    protected TableDataInfo getDataTable(List<?> list) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(HttpStatus.OK.value());
        rspData.setMsg("查询成功");
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(list).getTotal());
        return rspData;
    }
    /**
     * 获取用户缓存信息
     */
    public LoginEntity getLoginUser() {
        return SecurityUtils.getLoginUser();
    }

    /**
     * 获取登录用户id
     */
    public Long getUserId() {
        return getLoginUser().getUserId();
    }

    /**
     * 获取登录部门id
     */
    public Long getDeptId() {
        return getLoginUser().getDeptId();
    }


    /**
     * 获取登录用户名
     */
    public String getUsername() {
        return SecurityUtils.getLoginUser().getUsername();
    }

}
